#ifndef __THREAD_POOL__
#define __THREAD_POOL__
#include <my_header.h>
#include "numStack.h"
//线程池基础
int initTcp(char *ip, char *port);
int epollAdd(int epfd, int fd);
int epollDel(int epfd, int fd);
int transFile(int netfd);
//小火车
typedef struct train_s
{
    int flag;          
    int length;
    char data[1000];               
}train_t;
int recvn(int sockfd,void *buf,int length);

int randomSaltValue(char *salt);//随机生成盐值


/////////////func各种结构体
int func_pwd(char * ant,numStack_t * stack,MYSQL * mysql);
int func_cd(char * path,numStack_t * stack,MYSQL * mysql,char * user_name);
int func_ls(char * ant,numStack_t * stack,MYSQL * mysql);
int func_puts(int netfd,char * file_name,numStack_t * stack,MYSQL * mysql,char * user_name);
int func_remove(char *fileName,MYSQL *mysql,numStack_t * stack);
int func_mkdir(char *user_name,numStack_t *stack,char *fileName,MYSQL *mysql);
int func_rmdir(numStack_t *stack,char *dirName,MYSQL *mysql);

int quick_send(char *hash,MYSQL *mysql);
int recv_file(numStack_t *stack,char *hash,char *userName,int netfd,MYSQL *mysql);
int check_file_full(numStack_t *stack,char *hash,char *fileName,MYSQL *mysql);

///集合 hash 循环队列
typedef struct 
{                              
    int elements[10];   // 存储元素的数组
    int set_index;
} Set;
int set_init(Set * set);
int set_contains(const Set* set, int element);
int set_add(Set* set, int element);
int set_remove(Set* set, int element);
void set_print(const Set* set);
typedef struct
{
    int queue_location;
    char userName[50];
    int flag;
    numStack_t  stack;
}hash_t;

//master给工人传输的结构体
typedef struct
{
    char userName[50];
    char fileName[50];
    int netfd;
    MYSQL * mysql;
    numStack_t  stack;
    int flag;
}Package;



#endif 
